package com.qing.demo.netty.util;

import com.qing.demo.netty.domain.*;

/**
 * @author caozhipeng
 * @date 2025/7/25
 */
public class MsgUtil {
    public static MsgInfo buildMsg(String channelId, String msgContent){
        return new MsgInfo(channelId, msgContent);
    }

    /**
     * 构建对象：请求传输文件（客户端）
     * @param fileUrl
     * @param fileName
     * @param fileSize
     * @return
     */
    public static FileTransferProtocol buildRequestTransferFile(String fileUrl, String fileName,Long fileSize){
        FileDescInfo fileDescInfo=new FileDescInfo();
        fileDescInfo.setFileUrl(fileUrl);
        fileDescInfo.setFileName(fileName);
        fileDescInfo.setFileSize(fileSize);

        FileTransferProtocol fileTransferProtocol=new FileTransferProtocol();
        fileTransferProtocol.setTransferType(Constants.TransferType.REQUEST);
        fileTransferProtocol.setTransferObj(fileDescInfo);
        return fileTransferProtocol;
    }

    /**
     * 构建对象：文件传输指令（服务端）
     * @param clientFileUrl
     * @param readPosition
     * @param status
     * @return
     */
    public static FileTransferProtocol buildTransferInstruct(String clientFileUrl,Integer readPosition,Integer status){
        FileBurstInstruct fileBurstInstruct=new FileBurstInstruct();
        fileBurstInstruct.setClientFileUrl(clientFileUrl);
        fileBurstInstruct.setReadPosition(readPosition);
        fileBurstInstruct.setStatus(status);

        FileTransferProtocol fileTransferProtocol=new FileTransferProtocol();
        fileTransferProtocol.setTransferType(Constants.TransferType.INSTRUCT);
        fileTransferProtocol.setTransferObj(fileBurstInstruct);
        return fileTransferProtocol;
    }

    /**
     * 构建对象：文件传输数据（服务端）
     * @return
     */
    public static FileTransferProtocol buildTransferInstruct(FileBurstInstruct fileBurstInstruct){
        FileTransferProtocol fileTransferProtocol=new FileTransferProtocol();
        fileTransferProtocol.setTransferType(Constants.TransferType.INSTRUCT);
        fileTransferProtocol.setTransferObj(fileBurstInstruct);
        return fileTransferProtocol;
    }

    /**
     * 构建对象：文件传输数据（客户端）
     * @return
     */
    public static FileTransferProtocol buildTransferData(FileBurstData fileBurstData){
        FileTransferProtocol fileTransferProtocol=new FileTransferProtocol();
        fileTransferProtocol.setTransferType(Constants.TransferType.DATA);
        fileTransferProtocol.setTransferObj(fileBurstData);
        return fileTransferProtocol;
    }
}
